package com.hxd.mall.application

import android.content.Context
import android.content.res.Resources
import androidx.multidex.MultiDex
import com.hxd.mall.constant.HxdGlobalInfo.instance
import com.hxd.mall.injector.components.DaggerApplicationComponent
import com.hxd.mall.utils.open.ApkTool.isForeground
import dagger.android.AndroidInjector
import dagger.android.DaggerApplication

/**
 * @author zhaoyong
 * @description:
 * @date :2019/7/16 3:26 PM
 */
class HxdApplication : DaggerApplication() {

    override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
        return DaggerApplicationComponent.builder().application(this).build()
    }

    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        /**
         * You must install multiDex whatever tinker is installed!
         * 解决65535方法数超标的问题：采用 MultiDex 的 App 解压后可以看到有classes.dex，classes2.dex等多个dex文件，
         * 每个 dex 都可以最大承载 64k 个方法
         */
        MultiDex.install(base)
    }

    override fun onCreate() {
        super.onCreate()
        instance = this
//        when (SystemUtil.getProcessName(this)) {
//            packageName -> {
//                if (BuildConfig.DEBUG) {
//                    ARouter.openLog()
//                    ARouter.openDebug()
//                }
//                ARouter.init(this)
//
//                //初始化三方库
//                ThirdInitUtil.thirdInitUtils(instance)
//            }
//        }

        // 获取系统剪贴板
//        val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
//        // 添加剪贴板数据改变监听器
//        clipboard.addPrimaryClipChangedListener {
//            if (!isAppBackground)
//                isAppBackground = true
//            // 剪贴板中的数据被改变，此方法将被回调
//            Log.d("getTopActivity", getTopActivity(this))
//        }

        // 移除指定的剪贴板数据改变监听器
        // clipboard.removePrimaryClipChangedListener(listener);
    }

//    override fun onTrimMemory(level: Int) {
//        super.onTrimMemory(level)
//        if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
//            isAppBackground = true
//            Log.d("onTrimMemory", level.toString())
//        }
//    }

    /**
     * 重写 getResource 方法，防止系统字体影响
     */
    override fun getResources(): Resources {//禁止app字体大小跟随系统字体大小调节
        val resources = super.getResources()
        if (resources != null && resources.configuration.fontScale !== 1.0f) {
            val configuration = resources.configuration
            configuration.fontScale = 1.0f
            resources.updateConfiguration(configuration, resources.displayMetrics)
        }
        return resources
    }

    override fun onTrimMemory(level: Int) {
        super.onTrimMemory(level)
        isForeground(this)
    }
}